home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / T U R B O Language / Turbo C v2.0 / INCLUDE / FLOAT.H < prev    next >
Text File  |  1988-08-29  |  4KB  |  131 lines

  1. /*    float.h
  2.  
  3.     Defines implementation specific macros for dealing with
  4.     floating point.
  5.  
  6.     Copyright (c) Borland International 1987,1988
  7.     All Rights Reserved.
  8. */
  9. #if __STDC__
  10. #define _Cdecl
  11. #else
  12. #define _Cdecl    cdecl
  13. #endif
  14.  
  15. #define FLT_RADIX            2
  16. #define FLT_ROUNDS            1
  17. #define FLT_GUARD            1
  18. #define FLT_NORMALIZE            1
  19.  
  20. #define DBL_DIG                15
  21. #define FLT_DIG                6
  22. #define LDBL_DIG            19
  23.  
  24. #define DBL_MANT_DIG            53
  25. #define FLT_MANT_DIG            24
  26. #define LDBL_MANT_DIG            64
  27.  
  28. #define DBL_EPSILON            2.2204460492503131E-16
  29. #define FLT_EPSILON            1.19209290E-07F
  30. #define LDBL_EPSILON            1.084202172485504E-19
  31.  
  32. /* smallest positive IEEE normal numbers */
  33. #define DBL_MIN                2.2250738585072014E-308
  34. #define FLT_MIN                1.17549435E-38F
  35. #define LDBL_MIN                _tiny_ldble
  36.  
  37. #define DBL_MAX            _huge_dble
  38. #define FLT_MAX            _huge_flt
  39. #define LDBL_MAX            _huge_ldble
  40.  
  41. #define DBL_MAX_EXP            +1024
  42. #define FLT_MAX_EXP            +128
  43. #define LDBL_MAX_EXP            +16384
  44.  
  45. #define DBL_MAX_10_EXP            +308
  46. #define FLT_MAX_10_EXP            +38
  47. #define LDBL_MAX_10_EXP            +4932
  48.  
  49. #define DBL_MIN_10_EXP            -307
  50. #define FLT_MIN_10_EXP            -37
  51. #define LDBL_MIN_10_EXP            -4931
  52.  
  53. #define DBL_MIN_EXP            -1021
  54. #define FLT_MIN_EXP            -125
  55. #define LDBL_MIN_EXP            -16381
  56.  
  57. extern float _Cdecl _huge_flt;
  58. extern double _Cdecl _huge_dble;
  59. extern long double _Cdecl _huge_ldble;
  60. extern long double _Cdecl _tiny_ldble;
  61.  
  62. unsigned int _Cdecl _clear87(void);
  63. unsigned int _Cdecl _control87(unsigned int new, unsigned int mask);
  64. void         _Cdecl _fpreset(void);
  65. unsigned int _Cdecl _status87(void);
  66.  
  67. /* 8087/80287 Status Word format   */
  68.  
  69. #define SW_INVALID        0x0001    /* Invalid operation        */
  70. #define SW_DENORMAL        0x0002    /* Denormalized operand        */
  71. #define SW_ZERODIVIDE        0x0004    /* Zero divide            */
  72. #define SW_OVERFLOW        0x0008    /* Overflow            */
  73. #define SW_UNDERFLOW        0x0010    /* Underflow            */
  74. #define SW_INEXACT        0x0020    /* Precision (Inexact result)    */
  75.  
  76. /* 8087/80287 Control Word format */
  77.  
  78. #define MCW_EM            0x003f    /* interrupt Exception Masks    */
  79. #define        EM_INVALID        0x0001    /*   invalid            */
  80. #define        EM_DENORMAL        0x0002    /*   denormal            */
  81. #define        EM_ZERODIVIDE    0x0004    /*   zero divide        */
  82. #define        EM_OVERFLOW        0x0008    /*   overflow            */
  83. #define        EM_UNDERFLOW    0x0010    /*   underflow            */
  84. #define        EM_INEXACT        0x0020    /*   inexact (precision)    */
  85.  
  86. #define MCW_IC            0x1000    /* Infinity Control        */
  87. #define        IC_AFFINE        0x1000    /*   affine            */
  88. #define        IC_PROJECTIVE    0x0000    /*   projective            */
  89.  
  90. #define MCW_RC            0x0c00    /* Rounding Control        */
  91. #define        RC_CHOP        0x0c00    /*   chop            */
  92. #define        RC_UP        0x0800    /*   up                */
  93. #define        RC_DOWN        0x0400    /*   down            */
  94. #define        RC_NEAR        0x0000    /*   near            */
  95.  
  96. #define MCW_PC            0x0300    /* Precision Control        */
  97. #define        PC_24        0x0000    /*    24 bits            */
  98. #define        PC_53        0x0200    /*    53 bits            */
  99. #define        PC_64        0x0300    /*    64 bits            */
  100.  
  101. /* 8087/80287 Initial Control Word */
  102. /* use affine infinity, mask underflow and precision exceptions */
  103.  
  104. #define CW_DEFAULT    (RC_NEAR+PC_64+IC_AFFINE+EM_UNDERFLOW+EM_INEXACT)
  105.  
  106. /* 
  107.     SIGFPE signal error types (for integer & float exceptions). 
  108. */
  109. #define    FPE_INTOVFLOW        126    /* 80x86 Interrupt on overflow    */
  110. #define    FPE_INTDIV0        127    /* 80x86 Integer divide by zero    */
  111.  
  112. #define    FPE_INVALID        129    /* 80x87 invalid operation    */
  113. #define    FPE_ZERODIVIDE        131    /* 80x87 divide by zero        */
  114. #define    FPE_OVERFLOW        132    /* 80x87 arithmetic overflow    */
  115. #define    FPE_UNDERFLOW        133    /* 80x87 arithmetic underflow    */
  116. #define    FPE_INEXACT        134    /* 80x87 precision loss        */
  117. #define    FPE_EXPLICITGEN        140    /* When SIGFPE is raise()'d    */
  118.  
  119. /* 
  120.             SIGSEGV signal error types.
  121. */
  122. #define    SEGV_BOUND        10    /* A BOUND violation (SIGSEGV)    */
  123. #define    SEGV_EXPLICITGEN    11    /* When SIGSEGV is raise()'d    */
  124.  
  125. /* 
  126.             SIGILL signal error types.
  127. */
  128. #define    ILL_EXECUTION        20    /* Illegal operation exception    */
  129. #define    ILL_EXPLICITGEN        21    /* When SIGILL is raise()'d    */
  130.  
  131.